

#ifndef EVALUADOR_SUPERFICIE_H_
#define EVALUADOR_SUPERFICIE_H_

#include <memory>

class Superficie;
class Curva;
class Vertexs;
class Coord;

class Discretizador {
   private:
      float pasoDiscretizacionU;
      float pasoDiscretizacionV;

      mutable const Superficie *sup;
      mutable std::auto_ptr<Vertexs> discr;

      void franjaTrianStrip(float u, float pasoU) const;
      void parVertices(float u_p, float u_q, float v) const;

   public:
      Discretizador(float pasoDiscretizacionU = 0.05, float pasoDiscretizacionV = 0.05) :
         pasoDiscretizacionU(pasoDiscretizacionU),
         pasoDiscretizacionV(pasoDiscretizacionV) {}

      Vertexs* superficie(const Superficie &sup) const;
      Vertexs* curvaRellena(const Curva &curva) const;
      Vertexs* curvaRellena(const Curva &curva, const Coord &normal) const;
      Vertexs* entreCurvas(const Curva &curva, const Curva &otraCurva,
            const Coord &normal) const;
      

};

#endif
